Angular-এ রাউট রেজলভার (Route Resolver) হল একটি বিশেষ ধরনের Angular সার্ভিস যা রাউটিং সিস্টেমের সাথে সংযুক্ত থাকে এবং রাউট লোড হওয়ার আগে নির্দিষ্ট ডেটা ফেচিং বা অ্যাসিনক্রোনাস অপারেশন সম্পন্ন করে। এটি একটি অ্যাঙ্গুলার রাউটের সাথে যুক্ত থাকে, যাতে ইউজার রাউটের টার্গেট কম্পোনেন্টে পৌঁছানোর আগেই প্রয়োজনীয় ডেটা লোড হয়ে যায়।
রাউট রেজলভার সাধারণত সেই ক্ষেত্রে ব্যবহার করা হয় যখন আপনার কম্পোনেন্টের জন্য কোন ডেটা সার্ভিস বা API কলের মাধ্যমে আসতে হবে এবং আপনি নিশ্চিত করতে চান যে কম্পোনেন্টটি শুধু ডেটা পাওয়ার পরই রেন্ডার হবে।
যখন Angular রাউটার কোন নতুন রাউট লোড করতে চায়, তখন আপনি একটি রেজলভার তৈরি করেন যা প্রয়োজনীয় ডেটা ফেচিং সম্পন্ন করবে। এই ডেটা ফেচিং সম্পন্ন হওয়ার পর রাউট রেন্ডার হবে।
রাউট রেজলভার সাধারণত resolve
মেথডের মাধ্যমে কাজ করে যা একটি প্রমিস (Promise) বা Observable রিটার্ন করে। Angular রাউটার অপেক্ষা করবে যতক্ষণ না ডেটা লোড হয়ে যাবে এবং তারপর কম্পোনেন্টে নেভিগেট করবে।
১. রেজলভার সার্ভিস তৈরি করুন: প্রথমে একটি সার্ভিস তৈরি করতে হবে যেটি রেজলভার ফাংশনালিটি প্রদান করবে।
Angular CLI দিয়ে রেজলভার সার্ভিস তৈরি করতে:
ng generate service resolvers/data
এটি একটি data.resolver.ts
নামক ফাইল তৈরি করবে।
২. রেজলভার সার্ভিসের কোড লিখুন: Resolve
ইন্টারফেসটি ইমপ্লিমেন্ট করুন এবং resolve
মেথডে ডেটা ফেচিং লজিক লিখুন।
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
import { Observable } from 'rxjs';
import { DataService } from './data.service'; // আপনার ডেটা সার্ভিস
@Injectable({
providedIn: 'root'
})
export class DataResolver implements Resolve<any> {
constructor(private dataService: DataService) {}
resolve(): Observable<any> {
return this.dataService.getData(); // এখানে আপনার API কল বা ডেটা ফেচিং কোড থাকবে
}
}
এখানে:
resolve
মেথডটি একটি Observable
বা Promise
রিটার্ন করবে।DataService
হল একটি সার্ভিস যা ডেটা ফেচিংয়ের জন্য ব্যবহার করা হবে (এটি আপনার API কল বা অন্য যেকোনো ডেটা রিটার্ন করতে পারে)।একবার রেজলভার তৈরি হয়ে গেলে, এটি রাউট কনফিগারেশনে ব্যবহার করতে হবে যাতে রাউটের লোড হওয়ার সময় ডেটা ফেচিং হয়।
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { DataResolver } from './resolvers/data.resolver';
const routes: Routes = [
{
path: 'home',
component: HomeComponent,
resolve: { data: DataResolver } // রেজলভার যুক্ত করা হল
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
এখানে:
resolve
প্রপার্টি ব্যবহার করে DataResolver
রেজলভার অ্যাসাইন করা হয়েছে। এটি data
নামে একটি প্রোপার্টি হিসাবে ডেটা রিটার্ন করবে।এখন, HomeComponent
-এ আমরা রেজলভড ডেটা ব্যবহার করতে পারি। Angular রাউটার স্বয়ংক্রিয়ভাবে এই ডেটা ActivatedRoute
এর মাধ্যমে কম্পোনেন্টে ইনজেক্ট করবে।
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {
data: any;
constructor(private route: ActivatedRoute) {}
ngOnInit(): void {
this.data = this.route.snapshot.data['data']; // রেজলভড ডেটা অ্যাক্সেস করা
}
}
এখানে, ActivatedRoute.snapshot.data['data']
থেকে আমরা DataResolver
এর মাধ্যমে রিটার্ন করা ডেটা অ্যাক্সেস করছি।
রাউট রেজলভার Angular অ্যাপ্লিকেশনগুলিতে ডেটা ফেচিং বা অন্যান্য অ্যাসিনক্রোনাস কাজগুলি সম্পন্ন করার জন্য ব্যবহৃত হয়। এটি রাউট লোড হওয়ার আগে নির্দিষ্ট ডেটা রিটার্ন করে এবং কম্পোনেন্টটিকে ডেটা রেন্ডার করার আগে একে প্রি-লোড করতে সহায়ক। এটি Angular অ্যাপ্লিকেশনের কর্মক্ষমতা এবং ইউজার এক্সপেরিয়েন্স উন্নত করতে সাহায্য করে।
Read more